'use strict';

var entryFactory = require('../../../../factory/EntryFactory'),
    cmdHelper = require('../../../../helper/CmdHelper');

var is = require('bpmn-js/lib/util/ModelUtil').is,
    isEventSubProcess = require('bpmn-js/lib/util/DiUtil').isEventSubProcess;

module.exports = function (group, element, bpmnFactory, conditionalEventDefinition, elementRegistry, translate) {

    var getValue = function (modelProperty) {
        return function (element) {
            var modelPropertyValue = conditionalEventDefinition.get('camunda:' + modelProperty);
            var value = {};

            value[modelProperty] = modelPropertyValue;
            return value;
        };
    };

    var setValue = function (modelProperty) {
        return function (element, values) {
            var props = {};

            props['camunda:' + modelProperty] = values[modelProperty] || undefined;

            return cmdHelper.updateBusinessObject(element, conditionalEventDefinition, props);
        };
    };

    group.entries.push(entryFactory.textField({
        id: 'variableName',
        label: translate('Variable Name'),
        modelProperty: 'variableName',

        get: getValue('variableName'),
        set: setValue('variableName')
    }));

    var isConditionalStartEvent =
        is(element, 'bpmn:StartEvent') && !isEventSubProcess(element.parent);

    if (!isConditionalStartEvent) {
        group.entries.push(entryFactory.textField({
            id: 'variableEvent',
            label: translate('Variable Event'),
            description: translate('Specify more than one variable change event as a comma separated list.'),
            modelProperty: 'variableEvent',

            get: getValue('variableEvent'),
            set: setValue('variableEvent')
        }));
    }
};
